import type { IAreaChartSpec } from '../../chart/area/interface';
import type { IBarChartSpec } from '../../chart/bar/interface';
import type { IBoxPlotChartSpec } from '../../chart/box-plot/interface';
import type { ICirclePackingChartSpec } from '../../chart/circle-packing/interface';
import type { ICommonChartSpec } from '../../chart/common/interface';
import type { IFunnelChartSpec } from '../../chart/funnel/interface';
import type { IGaugeChartSpec } from '../../chart/gauge/interface';
import type { IHeatmapChartSpec } from '../../chart/heatmap/interface';
import type { IHistogramChartSpec } from '../../chart/histogram/interface';
import type { ILineChartSpec } from '../../chart/line/interface';
import type { IMapChartSpec } from '../../chart/map/interface';
import type { IPieChartSpec } from '../../chart/pie/interface';
import type { ICircularProgressChartSpec } from '../../chart/progress/circular/interface';
import type { ILinearProgressChartSpec } from '../../chart/progress/linear/interface';
import type { IRadarChartSpec } from '../../chart/radar/interface';
import type { IRangeAreaChartSpec } from '../../chart/range-area/interface';
import type { IRangeColumnChartSpec } from '../../chart/range-column/interface';
import type { IRoseChartSpec } from '../../chart/rose/interface';
import type { ISankeyChartSpec } from '../../chart/sankey/interface';
import type { IScatterChartSpec } from '../../chart/scatter/interface';
import type { ISequenceChartSpec } from '../../chart/sequence/interface';
import type { ISunburstChartSpec } from '../../chart/sunburst/interface';
import type { ITreemapChartSpec } from '../../chart/treemap/interface';
import type { IWaterfallChartSpec } from '../../chart/waterfall/interface';
import type { ICorrelationChartSpec } from '../../chart/correlation/interface';
import type { IWordCloudChartSpec } from '../../chart/word-cloud/interface';
import type { IChartSpec } from './common';
import type { ILiquidChartSpec } from '../../chart/liquid/interface';

export interface ChartSpecMap {
  readonly common: ICommonChartSpec;
  readonly area: IAreaChartSpec;
  readonly line: ILineChartSpec;
  readonly bar: IBarChartSpec;
  readonly histogram: IHistogramChartSpec;
  readonly rangeColumn: IRangeColumnChartSpec;
  readonly rangeArea: IRangeAreaChartSpec;
  readonly map: IMapChartSpec;
  readonly pie: IPieChartSpec;
  readonly radar: IRadarChartSpec;
  readonly rose: IRoseChartSpec;
  readonly scatter: IScatterChartSpec;
  readonly sequence: ISequenceChartSpec;
  readonly circleProgress: ICircularProgressChartSpec;
  readonly linearProgress: ILinearProgressChartSpec;
  readonly wordCloud: IWordCloudChartSpec;
  readonly funnel: IFunnelChartSpec;
  readonly waterfall: IWaterfallChartSpec;
  readonly boxplot: IBoxPlotChartSpec;
  readonly gauge: IGaugeChartSpec;
  readonly sankey: ISankeyChartSpec;
  readonly treemap: ITreemapChartSpec;
  readonly sunburst: ISunburstChartSpec;
  readonly circlePacking: ICirclePackingChartSpec;
  readonly heatmap: IHeatmapChartSpec;
  readonly correlation: ICorrelationChartSpec;
  readonly liquid: ILiquidChartSpec;
}

export type ISpec = ChartSpecMap[keyof ChartSpecMap] | IChartSpec;
